--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / js / clampFloatingToViewport.js
Displaying Raw • Download
meshchatx/src/frontend/js/clampFloatingToViewport.js 9f75e3db181925ddd253f7fb231af81f9fb8c013 (9f75e3db) Text, 1.08 KB
T8b949e// SPDX-License-Identifier: 0BSD
T8b949e/**
* Clamp top-left coordinates for a fixed-position panel so it stays on-screen.
*
* @param {number} preferredLeft
* @param {number} preferredTop
* @param {number} width
* @param {number} height
* @param {{ margin?: number }} [options]
* @returns {{ left: number, top: number, maxHeight: number | null }}
*/
Tff7b72export Tff7b72function Te6edf3clampFloatingToViewportTb4b4b4(Te6edf3preferredLeftTb4b4b4, Te6edf3preferredTopTb4b4b4, Te6edf3widthTb4b4b4, Te6edf3heightTb4b4b4, Te6edf3options Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3margin Tff7b72= Te6edf3optionsTb4b4b4.Te6edf3margin Tff7b72?? T79c0ff8Tb4b4b4;
Tff7b72const Te6edf3vw Tff7b72= Tffa657windowTb4b4b4.Te6edf3innerWidthTb4b4b4;
Tff7b72const Te6edf3vh Tff7b72= Tffa657windowTb4b4b4.Te6edf3innerHeightTb4b4b4;
Tff7b72const Te6edf3maxW Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3vw Tff7b72- T79c0ff2 Tff7b72* Te6edf3marginTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3maxH Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3vh Tff7b72- T79c0ff2 Tff7b72* Te6edf3marginTb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3left Tff7b72= Te6edf3preferredLeftTb4b4b4;
Tff7b72let Te6edf3top Tff7b72= Te6edf3preferredTopTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3width Tff7b72<= Te6edf3maxWTb4b4b4) Tb4b4b4{
Te6edf3left Tff7b72= Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(Te6edf3marginTb4b4b4, Te6edf3leftTb4b4b4)Tb4b4b4, Te6edf3vw Tff7b72- Te6edf3width Tff7b72- Te6edf3marginTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3left Tff7b72= Te6edf3marginTb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3maxHeight Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3height Tff7b72<= Te6edf3maxHTb4b4b4) Tb4b4b4{
Te6edf3top Tff7b72= Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(Te6edf3marginTb4b4b4, Te6edf3topTb4b4b4)Tb4b4b4, Te6edf3vh Tff7b72- Te6edf3height Tff7b72- Te6edf3marginTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3top Tff7b72= Te6edf3marginTb4b4b4;
Te6edf3maxHeight Tff7b72= Te6edf3maxHTb4b4b4;
Tb4b4b4}
Tff7b72return Tb4b4b4{ Te6edf3leftTb4b4b4, Te6edf3topTb4b4b4, Te6edf3maxHeight Tb4b4b4}Tb4b4b4;
Tb4b4b4}
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────